/*
 * trace_VariableInfo.h
 *
 *  Created on: 2012/07/10
 *      Author: guanxiaoying
 */

#ifndef TRACE_VARIABLEINFO_H_
#define TRACE_VARIABLEINFO_H_
/* temporary variable */
typedef struct {
	BOOL (*clear)( VOID );
	BOOL (*alloc)( AST );
	AST  (*getMax)( VOID );
	/* property below: the temporary variable information(LinkVariable )*/
	ACCESS_IDX_FIELD variable;
	/* property below: the status of the temporary variable */
	ACCESS_U4_FIELD attribute;
	/* property below: the flags of the temporary variable */
	ACCESS_U4_FIELD flag;
	/* property below: the next  temporary variable in same variable-block(stTrVariableBlockAccess) */
	ACCESS_IDX_FIELD next;
	/* property below: the previous temporary variable in same variable-block(stTrVariableBlockAccess) */
	ACCESS_IDX_FIELD before;
	/* property below: get the value-scope of this variable */
	VOID (*getValueScope)( AST, TRVALUESCP* );
	/* property below: record the value-scope of this variable */
	VOID (*setValueScope)( AST, TRVALUESCP* );
	/* property below: get the value-scope of this variable when the result of condition is false */
	VOID (*getNegValueScope)( AST, TRVALUESCP* );
	/* property below: record the value-scope of this variable when the result of condition is false */
	VOID (*setNegValueScope)( AST, TRVALUESCP* );
}TRVARIABLEACCESS;
extern const TRVARIABLEACCESS stTrVariableAccess;
#endif /* TRACE_VARIABLEINFO_H_ */
